package com.dinner.struts.action;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import com.dinner.model.DinnerUser;
import com.dinner.model.MenuItem;
import com.dinner.model.MenuType;
import com.dinner.service.MenuItemService;
import com.dinner.util.EntityListUtils;
import com.dinner.util.PageHelper;

public class MenuItemManagementAction extends Action {

	private MenuItemService service = null;

	/**
	 * @return the service
	 */
	public MenuItemService getService() {
		return service;
	}

	/**
	 * @param service the service to set
	 */
	public void setService(MenuItemService service) {
		this.service = service;
	}

	/* (non-Javadoc)
	 * @see org.apache.struts.action.Action#execute(org.apache.struts.action.ActionMapping, org.apache.struts.action.ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
	 */
	@SuppressWarnings("unchecked")
	@Override
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) throws Exception {
		
		HttpSession session = request.getSession();
		
		DinnerUser user = (DinnerUser) session.getAttribute("user");
		if (user == null || user.getClass() != com.dinner.model.Seller.class) {
			return mapping.findForward("LoginError");
		}
		int type = Integer.parseInt(request.getParameter("menuType"));
		
		String pageNum = request.getParameter("pageNum");
		int page = pageNum == null ? 1 : Integer.parseInt(pageNum);
		
		PageHelper p = new PageHelper();
		p.setCurrentPage(page);
		p.setAdditionPath("menuItemManagement.do?menuType="+type+"&");
		
		List<MenuItem> list = service.getMenuItemsByTypeAndPage(type, p);
		session.setAttribute("MenuItemList", list);
		
		List<MenuType> l = (List<MenuType>)session.getAttribute("MenuTypeList");
		request.setAttribute("type", EntityListUtils.getTypeFromList(l, type));
		request.setAttribute("pageInfo", p);
		
		return mapping.findForward("MenuItemPage");
		
	}
}
